#ifndef VLTOOLBAR_H
#define VLTOOLBAR_H

#include <QToolBar>
#include <QToolButton>
#include <QPixmap>
#include <QColor>
#include <QString>
#include <QWidget>
#include "globalstates.h"
#include "structures.h"

class VLToolBar : public QToolBar
{
    Q_OBJECT
public:
    explicit VLToolBar(QWidget *parent = 0);
    
signals:
    void brushClicked();
    void fillClicked();
    void selectClicked();
    void eraserClicked();
    void transformClicked();
    void colorClicked();
    void magicWandClicked();
    void gameElementsClicked();
    void terrainClicked();
    void colorChanged(QColor);
    void toolClicked(QWidget *);

public slots:
    void setBrush();
    void setFill();
    void setSelect();
    void setEraser();
    void setTransform();
    void setMagicWand();
    void setGameElements();
    void setTerrain();
    void setColor();
    void changeColor(QColor);
    void experimentalSetTool(QWidget *btn);

private:
    QSignalMapper *sigMap;

    QToolButton *currentBtn;
    QToolButton *brushBtn;
    QToolButton *fillBtn;
    QToolButton *selectBtn;
    QToolButton *eraserBtn;
    QToolButton *transformBtn;
    QToolButton *magicWandBtn;
    QToolButton *gameElementsBtn;
    QToolButton *terrainBtn;
    QToolButton *colorBtn;
    QPixmap *colorMap;
    QColor currentColor;

    void setDefaults();

    QToolButton* createAndConnect(QString icon, const char *member);
    QToolButton* createAndConnect(QColor color, const char *member);

    void experimentalConnect();
    QColor getColorFromGlobalState();
    void setBtn(QToolButton *btn);
};

#endif // VLTOOLBAR_H
